common.skill

কন্ডিশনাল বিল্ড এবং লজিক কন্ট্রোল

Java Technologies - অ্যাপাচি অ্যান্ট (Apache ANT)
238
238

Apache ANT বিল্ড টুলে কন্ডিশনাল বিল্ড এবং লজিক কন্ট্রোল ব্যবহারের মাধ্যমে বিল্ড প্রক্রিয়াটিকে আরও নমনীয় এবং কাস্টমাইজযোগ্য করা যায়। ANT বিভিন্ন ধরনের কন্ডিশনাল এবং লজিকাল কন্ট্রোল প্রদান করে, যেমন if, unless, condition, property, task ইত্যাদি, যা একটি টাস্ক চালানোর জন্য শর্ত নির্ধারণ করতে সাহায্য করে। এই কন্ডিশনাল কন্ট্রোলের মাধ্যমে, আপনি বিভিন্ন পরিস্থিতিতে বিভিন্ন টাস্ক চালাতে পারেন।


১. if এবং unless - কন্ডিশনাল টাস্ক চালানো

ANT এ if এবং unless টাস্ক ট্যাগগুলির মাধ্যমে আপনি একটি টাস্ক বা টার্গেট চালানোর জন্য শর্ত নির্ধারণ করতে পারেন। if ট্যাগটি শুধুমাত্র তখন কাজ করে যখন নির্দিষ্ট শর্ত সত্য হয় এবং unless তখন কাজ করে যখন শর্ত মিথ্যা হয়।

if:

if ট্যাগটি একটি টাস্ক বা টার্গেট চালাবে যদি শর্তটি সত্য হয়।

উদাহরণ:

<target name="compile" if="compile.source">
    <javac srcdir="src" destdir="build/classes" />
</target>

<property name="compile.source" value="true" />

এখানে:

  • compile.source প্রপার্টি যদি true থাকে, তাহলে compile টার্গেটটি রান করবে।

unless:

unless ট্যাগটি একটি টাস্ক বা টার্গেট চালাবে যদি শর্তটি মিথ্যা হয়।

উদাহরণ:

<target name="clean" unless="skip.clean">
    <delete dir="build" />
</target>

<property name="skip.clean" value="false" />

এখানে:

  • skip.clean প্রপার্টি যদি false থাকে, তাহলে clean টার্গেটটি রান করবে।

২. condition - কন্ডিশনাল টাস্ক

condition ট্যাগটি শর্ত পূর্ণ হলে একটি প্রপার্টি সেট করার জন্য ব্যবহার করা হয়, যা পরে অন্যান্য টাস্ক বা টার্গেটের শর্ত নির্ধারণে ব্যবহার করা হতে পারে। এর মধ্যে বিভিন্ন শর্তযুক্ত টাস্ক যেমন isset, isnull, string ইত্যাদি থাকতে পারে।

উদাহরণ: isset কন্ডিশন ব্যবহার করা

<target name="check-condition">
    <condition property="conditionMet">
        <isset property="my.property"/>
    </condition>
    
    <echo message="Condition Met: ${conditionMet}" />
</target>

<property name="my.property" value="true"/>

এখানে:

  • isset টাস্কটি চেক করে যে my.property প্রপার্টিটি সেট আছে কি না। যদি সেট থাকে, তাহলে conditionMet প্রপার্টি true হবে।

৩. property টাস্কের মাধ্যমে কন্ডিশনাল লজিক

property টাস্কটি একটি শর্ত বা ভ্যালু চেক করতে ব্যবহৃত হয়। এটি কন্ডিশনাল লজিকের অংশ হিসেবে কাজ করে এবং প্রপার্টি বা ভ্যালু সেট করার জন্য ব্যবহার করা হয়।

উদাহরণ:

<target name="set-property">
    <property name="is.debug" value="true" />
</target>

<target name="compile" if="is.debug">
    <echo message="Debug mode is ON" />
</target>

এখানে:

  • is.debug প্রপার্টি যদি true থাকে, তাহলে compile টার্গেটটি চালানো হবে এবং একটি মেসেজ প্রদর্শন করা হবে।

৪. fail - বিল্ড ব্যর্থ করার জন্য শর্ত নির্ধারণ

fail টাস্কটি ব্যবহৃত হয় যখন একটি শর্ত পূর্ণ না হলে বিল্ডটিকে ব্যর্থ করতে হয়। এটি বিভিন্ন ধরনের কন্ডিশনাল লজিকের মধ্যে একটি গুরুত্বপূর্ণ অংশ হিসেবে কাজ করে, যা আপনার বিল্ড ফাইলের মধ্যে ত্রুটি চেক করার সময় সহায়ক হতে পারে।

উদাহরণ:

<target name="check-dependency">
    <fail message="Missing dependency!" if="missing.dependency" />
</target>

<property name="missing.dependency" value="true"/>

এখানে:

  • যদি missing.dependency প্রপার্টি true থাকে, তাহলে check-dependency টার্গেটটি ফেইল হবে এবং একটি ত্রুটি মেসেজ প্রদর্শন করবে।

৫. tasks টাস্কের মাধ্যমে লজিক কন্ট্রোল

আপনি ANT এর tasks টাস্কের মাধ্যমে বিভিন্ন লজিক কন্ট্রোল ব্যবহার করতে পারেন। এই টাস্কটি ব্যবহার করে আপনি একাধিক শর্তের মধ্যে সিদ্ধান্ত নিতে পারবেন এবং একটি টাস্ক বা টার্গেটের উপর নির্ভরশীলতা নির্ধারণ করতে পারবেন।

উদাহরণ:

<target name="run-tasks">
    <tasks>
        <task if="run.test" name="test" />
        <task unless="run.test" name="build" />
    </tasks>
</target>

<property name="run.test" value="true"/>

এখানে:

  • run.test প্রপার্টি যদি true থাকে, তাহলে test টাস্ক রান হবে, অন্যথায় build টাস্ক রান হবে।

৬. parallel - একাধিক টাস্ক বা টার্গেট সমান্তরালে চালানো

ANT তে parallel টাস্কের মাধ্যমে একাধিক টাস্ক সমান্তরালে চালানো যায়। এটি দীর্ঘ বিল্ড প্রসেসে সময় বাঁচাতে সহায়ক হতে পারে।

উদাহরণ:

<target name="run-tests">
    <parallel>
        <ant target="test1" />
        <ant target="test2" />
    </parallel>
</target>

এখানে:

  • test1 এবং test2 টার্গেট দুটি সমান্তরালে চালানো হবে।

সারমর্ম

Apache ANT-এ কন্ডিশনাল বিল্ড এবং লজিক কন্ট্রোল ব্যবহারের মাধ্যমে আপনি আপনার বিল্ড প্রক্রিয়াকে আরও নমনীয় এবং দক্ষ করে তুলতে পারেন। if, unless, condition, property, fail, এবং parallel এর মতো টাস্কগুলি আপনাকে শর্ত অনুযায়ী বিভিন্ন টাস্ক বা টার্গেট চালাতে সহায়তা করে।

common.content_added_by

if, unless Attributes ব্যবহার

251
251

Apache ANT এর if এবং unless attributes আপনাকে নির্দিষ্ট শর্তে একটি target বা task চালানোর জন্য ব্যবহার করার সুযোগ দেয়। এটি বিশেষভাবে তখন ব্যবহার হয় যখন আপনি কোনও নির্দিষ্ট শর্ত পূর্ণ হলে একটি কাজ চালাতে চান বা না চালাতে চান।

if Attribute:

if attribute ব্যবহার করে আপনি শর্ত নির্ধারণ করতে পারেন, এবং যদি ওই শর্তটি সত্য হয় (True), তাহলে ANT সেই task বা target চালাবে।

unless Attribute:

unless attribute ব্যবহার করে আপনি শর্ত নির্ধারণ করতে পারেন, এবং যদি ওই শর্তটি মিথ্যা (False) হয়, তাহলে ANT সেই task বা target চালাবে।


if এবং unless Attributes এর ব্যবহার

সিনট্যাক্স:

<target name="targetName" if="propertyName">
    <!-- Task or commands -->
</target>

<target name="targetName" unless="propertyName">
    <!-- Task or commands -->
</target>
  • if="propertyName": যদি propertyName নামে কোনো প্রপার্টি সেট করা থাকে এবং তার মান true হয়, তাহলে এই target বা task চালানো হবে।
  • unless="propertyName": যদি propertyName নামে কোনো প্রপার্টি সেট করা না থাকে বা তার মান false হয়, তখন এই target বা task চালানো হবে।

if এবং unless Attribute ব্যবহার করে উদাহরণ

উদাহরণ ১: if Attribute

<project name="IfExample" default="compile">

    <!-- একটি প্রপার্টি সেট করা -->
    <property name="compile" value="true"/>

    <!-- এই target শুধুমাত্র compile প্রপার্টি যদি true হয়, তখনই চলবে -->
    <target name="compile" if="compile">
        <echo message="Compiling the source code..."/>
    </target>

</project>

ব্যাখ্যা:

  • এখানে compile নামে একটি প্রপার্টি তৈরি করা হয়েছে, যার মান true
  • compile target শুধুমাত্র তখনই চালানো হবে, যখন compile প্রপার্টির মান true থাকবে।

উদাহরণ ২: unless Attribute

<project name="UnlessExample" default="compile">

    <!-- একটি প্রপার্টি সেট করা -->
    <property name="compile" value="false"/>

    <!-- এই target শুধুমাত্র compile প্রপার্টি যদি false হয়, তখনই চলবে -->
    <target name="compile" unless="compile">
        <echo message="Skipping compilation as the compile property is false."/>
    </target>

</project>

ব্যাখ্যা:

  • এখানে compile প্রপার্টির মান false
  • compile target শুধুমাত্র তখনই চালানো হবে, যদি compile প্রপার্টির মান false থাকে। অর্থাৎ, এই উদাহরণে কম্পাইলেশন স্কিপ করা হবে।

if এবং unless একসাথে ব্যবহার:

একই target বা task-এ if এবং unless attributes একসাথে ব্যবহার করা যেতে পারে, তবে একে অন্যের বিপরীত শর্তের অধীনে ব্যবহার করা হয়।

উদাহরণ:

<project name="IfUnlessExample" default="compile">

    <!-- দুটি প্রপার্টি সেট করা -->
    <property name="compile" value="true"/>
    <property name="skipCompile" value="false"/>

    <!-- এই target compile প্রপার্টি যদি true এবং skipCompile প্রপার্টি যদি false হয়, তখনই চলবে -->
    <target name="compile" if="compile" unless="skipCompile">
        <echo message="Compiling the source code..."/>
    </target>

</project>

ব্যাখ্যা:

  • এই target শুধুমাত্র তখনই চলবে, যখন compile প্রপার্টির মান true হবে এবং skipCompile প্রপার্টির মান false থাকবে।

সারমর্ম:

  • if Attribute: একটি task বা target চালানোর জন্য একটি শর্ত পূর্ণ হলে এটি কার্যকর হয়।
  • unless Attribute: একটি task বা target চালানোর জন্য শর্ত পূর্ণ না হলে এটি কার্যকর হয়।

এগুলি ব্যবহারের মাধ্যমে আপনি Apache ANT বিল্ড স্ক্রিপ্টে শর্তযুক্ত কার্যক্রম পরিচালনা করতে পারবেন, যা বিল্ড প্রক্রিয়াকে আরও নমনীয় এবং কার্যকরী করে তোলে।

common.content_added_by

Condition Task

231
231

Apache ANT-এর condition task একটি শক্তিশালী টুল, যা শর্তাধীন বিবৃতি (conditional statements) বা পরীক্ষা চালানোর জন্য ব্যবহৃত হয়। এটি নির্দিষ্ট শর্ত অনুযায়ী টাস্কগুলি চালানো বা বাদ দেওয়ার জন্য ব্যবহৃত হয়। condition task এর মাধ্যমে আপনি নির্দিষ্ট শর্ত পূর্ণ হলে বা না হলে বিল্ড টাস্কগুলি চালানোর জন্য লজিক্যাল অপারেশন বা পরীক্ষা করতে পারেন।

condition Task এর ব্যবহার:

condition task মূলত শর্ত বা পরীক্ষা চালায় এবং ফলস্বরূপ একটি পরিবর্তনশীল (property) সেট করে যা পরে অন্য টাস্কগুলিতে ব্যবহৃত হতে পারে। এটি বিভিন্ন ধরণের শর্ত পরীক্ষা করতে ব্যবহৃত হতে পারে, যেমন:

  • ফাইল বা ডিরেক্টরি অস্তিত্ব পরীক্ষা।
  • একটি ভেরিয়েবলের মান পরীক্ষা।
  • একটি কাস্টম কমান্ড বা স্ক্রিপ্টের আউটপুট পরীক্ষা।

condition Task এর ধরন:

ANT-এ condition task এর বিভিন্ন ধরন রয়েছে, যা নিম্নরূপ:

  1. available - একটি ফাইল বা ডিরেক্টরি আছে কিনা পরীক্ষা করে।
  2. if / unless - শর্ত অনুযায়ী টাস্ক চালানো।
  3. macrodef - কাস্টম মাক্রো তৈরি করা, যা পুনরায় ব্যবহারযোগ্য কোড ব্লক তৈরির জন্য ব্যবহৃত হয়।
  4. echo - নির্দিষ্ট বার্তা প্রিন্ট করা শর্তাধীনভাবে।
  5. and, or, not - লজিক্যাল অপারেটর ব্যবহার করে শর্ত পরীক্ষার জন্য।

available Task:

available task দিয়ে একটি নির্দিষ্ট ফাইল বা ডিরেক্টরি আছে কিনা পরীক্ষা করা হয় এবং এটি একটি প্রপার্টি সেট করে।

উদাহরণ:

<project name="Condition Example" default="check-file">

    <target name="check-file">
        <!-- available task ব্যবহার করে ফাইল চেক করা -->
        <available file="src/SomeFile.java" property="file.exists"/>

        <!-- যদি ফাইলটি থাকে, তবে এটি প্রিন্ট করবে -->
        <echo message="The file exists!" if="file.exists"/>
        <!-- যদি ফাইলটি না থাকে, তাহলে অন্য বার্তা প্রিন্ট করবে -->
        <echo message="The file does not exist!" unless="file.exists"/>
    </target>

</project>

এখানে, available task ফাইলটির উপস্থিতি পরীক্ষা করে এবং এর ফলাফল অনুযায়ী file.exists প্রপার্টি সেট করে। এরপর, if এবং unless টাস্ক ব্যবহার করে শর্ত অনুযায়ী বার্তা প্রিন্ট করা হয়েছে।


if / unless Task:

if এবং unless টাস্ক ব্যবহার করে আপনি শর্ত অনুযায়ী টাস্ক চালাতে পারেন। এগুলি মূলত একটি প্রপার্টির মান পরীক্ষা করে।

উদাহরণ:

<project name="Condition Example" default="conditional-task">

    <target name="conditional-task">
        <!-- প্রপার্টি চেক করা -->
        <condition property="compile" value="true">
            <isset property="source.dir"/>
        </condition>

        <!-- যদি প্রপার্টি compile সেট করা থাকে, তবে কম্পাইল টাস্ক চালান -->
        <echo message="Compiling the project..." if="compile"/>
    </target>

</project>

এখানে, isset ব্যবহার করে একটি প্রপার্টির উপস্থিতি পরীক্ষা করা হয়েছে। যদি source.dir প্রপার্টি সেট করা থাকে, তবে compile প্রপার্টি true হবে এবং echo টাস্ক চালানো হবে।


macrodef Task:

macrodef টাস্ক ব্যবহার করে আপনি কাস্টম মাক্রো বা কোড ব্লক তৈরি করতে পারেন যা পুনরায় ব্যবহারযোগ্য। এই মাক্রোটি শর্ত অনুযায়ী ব্যবহার করা যেতে পারে।

উদাহরণ:

<project name="Condition Example" default="execute-macro">

    <target name="execute-macro">
        <!-- macrodef তৈরি -->
        <macrodef name="sayHello">
            <attribute name="name"/>
            <sequential>
                <echo message="Hello, ${name}!"/>
            </sequential>
        </macrodef>

        <!-- মাক্রোটি শর্তানুযায়ী কল করা -->
        <sayHello name="John" if="greeting.required"/>
    </target>

</project>

এখানে, sayHello নামক একটি কাস্টম মাক্রো তৈরি করা হয়েছে যা একটি name অ্যাট্রিবিউট নেয় এবং সেই অনুযায়ী একটি মেসেজ প্রিন্ট করে। শর্তাধীনভাবে মাক্রোটি কল করা হয়েছে, যদি greeting.required প্রপার্টি সেট করা থাকে।


echo Task:

echo টাস্ক সাধারণত বার্তা প্রিন্ট করার জন্য ব্যবহৃত হয়। এটি শর্তের উপর ভিত্তি করে বার্তা প্রিন্ট করতে পারে।

উদাহরণ:

<project name="Condition Example" default="echo-message">

    <target name="echo-message">
        <!-- শর্তানুযায়ী মেসেজ প্রিন্ট করা -->
        <echo message="This is a test message" if="test.condition"/>
        <echo message="Test condition not met" unless="test.condition"/>
    </target>

</project>

এখানে, echo টাস্ক ব্যবহার করে শর্তানুযায়ী বার্তা প্রিন্ট করা হচ্ছে।


and / or / not Task:

এগুলি লজিক্যাল অপারেটর যা শর্তগুলির মধ্যে যুক্তি পরীক্ষা করতে ব্যবহৃত হয়।

উদাহরণ:

<project name="Condition Example" default="logical-operations">

    <target name="logical-operations">
        <condition property="allTestsPassed">
            <and>
                <isset property="test1.passed"/>
                <isset property="test2.passed"/>
            </and>
        </condition>

        <echo message="All tests passed!" if="allTestsPassed"/>
    </target>

</project>

এখানে, and অপারেটর ব্যবহার করে দুটি শর্ত পরীক্ষা করা হয়েছে (যেমন test1.passed এবং test2.passed)। যদি উভয় শর্তই পূর্ণ হয়, তাহলে allTestsPassed প্রপার্টি সেট হবে এবং একটি বার্তা প্রিন্ট হবে।


সারমর্ম:

  • condition task ANT-এ শর্তাধীন কার্যকলাপ পরিচালনা করতে ব্যবহৃত হয়।
  • এটি বিভিন্ন শর্ত পরীক্ষা করতে পারে, যেমন ফাইলের অস্তিত্ব, প্রপার্টি সেট হওয়া, এবং লজিক্যাল পরীক্ষা।
  • available, if, unless, macrodef, এবং লজিক্যাল অপারেটর (যেমন and, or, not) সহ বিভিন্ন উপাদান ব্যবহার করে শর্তাধীন টাস্কগুলি পরিচালনা করা যায়।
  • ANT-এর এই শর্তাধীন ফিচারগুলি বিল্ড প্রক্রিয়াকে আরও নমনীয় এবং কার্যকর করতে সাহায্য করে।
common.content_added_by

Multiple Build Targets এর ব্যবহার

284
284

Apache ANT-এ Multiple Build Targets ব্যবহার করা খুবই সহজ এবং এটি অত্যন্ত কার্যকরী যখন আপনি একটি প্রজেক্টের বিভিন্ন বিল্ড স্টেপ বা কাজ সম্পাদন করতে চান। ANT এর target ট্যাগ ব্যবহার করে আপনি একাধিক টার্গেট তৈরি করতে পারেন, এবং এগুলোকে নির্দিষ্ট অর্ডারে একে অপরের উপর নির্ভরশীল করে সাজাতে পারেন।


Multiple Build Targets কী?

Build Targets হল বিশেষ কাজ বা ধাপ যা ANT এর মাধ্যমে সম্পাদন করা হয়। প্রতিটি টার্গেটের মধ্যে একটি নির্দিষ্ট কাজ বা কাজের গুচ্ছ থাকতে পারে, যেমন কোড কম্পাইল করা, টেস্ট চালানো, আর্কাইভ তৈরি করা ইত্যাদি।

যখন একাধিক টার্গেট ব্যবহৃত হয়, তখন একটি টার্গেটের কাজ অন্য একটি টার্গেটের উপর নির্ভর করতে পারে, এবং ANT নিজে থেকেই সেই নির্ভরশীলতাগুলি পরিচালনা করবে।


Multiple Build Targets এর উদাহরণ

ধরা যাক, আমাদের একটি প্রজেক্ট আছে যেখানে তিনটি কাজ করতে হবে:

  1. clean: পুরনো বিল্ড ফাইল মুছে ফেলবে।
  2. compile: নতুন কোড কম্পাইল করবে।
  3. package: কম্পাইল করা কোডের জন্য JAR ফাইল তৈরি করবে।

build.xml উদাহরণ

<project name="MyProject" default="package" basedir=".">

    <!-- Properties -->
    <property name="src.dir" value="src"/>
    <property name="build.dir" value="build"/>
    <property name="lib.dir" value="lib"/>
    <property name="jar.name" value="myproject.jar"/>

    <!-- Clean target: Remove old build files -->
    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>

    <!-- Compile target: Compile Java source files -->
    <target name="compile" depends="clean">
        <mkdir dir="${build.dir}"/>
        <javac srcdir="${src.dir}" destdir="${build.dir}">
            <classpath>
                <pathelement path="${lib.dir}/some-library.jar"/>
            </classpath>
        </javac>
    </target>

    <!-- Package target: Create JAR file from compiled classes -->
    <target name="package" depends="compile">
        <jar destfile="${build.dir}/${jar.name}" basedir="${build.dir}">
            <manifest>
                <attribute name="Main-Class" value="com.myproject.Main"/>
            </manifest>
        </jar>
    </target>

</project>

ব্যাখ্যা:

  1. <target name="clean">:
    • এই টার্গেটটি build ডিরেক্টরি মুছে ফেলবে, যা আগের বিল্ডের ফাইলগুলো পরিষ্কার করবে।
  2. <target name="compile">:
    • compile টার্গেটটি clean টার্গেটের উপর নির্ভরশীল। অর্থাৎ, compile টার্গেটটি প্রথমে clean টার্গেটটি চালাবে (যতক্ষণ না clean সম্পন্ন হয়), তারপর কোড কম্পাইল করবে।
  3. <target name="package">:
    • package টার্গেটটি compile টার্গেটের উপর নির্ভরশীল। এটি প্রথমে compile টার্গেটটি চালাবে, তারপর কম্পাইল করা ক্লাস ফাইলগুলোকে একটি JAR ফাইলে প্যাকেজ করবে।

Target Dependency (টার্গেটের নির্ভরশীলতা)

একটি টার্গেটের মধ্যে depends অ্যাট্রিবিউট ব্যবহার করে অন্য টার্গেটগুলির উপর নির্ভরশীলতা তৈরি করা হয়। যখন একটি টার্গেটের উপর অন্য একটি টার্গেট নির্ভরশীল থাকে, তখন সেই টার্গেটটি প্রথমে চালানো হবে, এবং শুধুমাত্র নির্ভরশীল টার্গেটটি সফলভাবে সম্পন্ন হলে পরবর্তী টার্গেটটি চালানো হবে।

এখানে depends এর উদাহরণ:

<target name="compile" depends="clean">
    <!-- Compile Java source files -->
</target>

<target name="package" depends="compile">
    <!-- Create JAR file -->
</target>
  • depends="clean": compile টার্গেটটি clean টার্গেটের উপর নির্ভরশীল, তাই প্রথমে clean চলবে।
  • depends="compile": package টার্গেটটি compile টার্গেটের উপর নির্ভরশীল, অর্থাৎ প্রথমে কোড কম্পাইল হবে, তারপর JAR ফাইল তৈরি হবে।

Multiple Targets চালানো

আপনি যখন ANT রান করেন, আপনি একাধিক টার্গেটও নির্দিষ্ট করতে পারেন। ANT টার্গেটগুলি নির্দিষ্ট অর্ডারে চালায়, এবং একটি টার্গেট যদি অন্য একটি টার্গেটের উপর নির্ভরশীল হয়, তবে প্রথমে সেই নির্ভরশীল টার্গেটটি সম্পন্ন হবে।

কমান্ড:

ant clean compile package

এই কমান্ডটি প্রথমে clean টার্গেটটি চালাবে, তারপর compile এবং পরে package টার্গেটটি চালাবে। যদি আপনি শুধুমাত্র একটি টার্গেট চালাতে চান, যেমন শুধুমাত্র compile, তাহলে:

ant compile

Multiple Targets Without Dependency

যদি টার্গেটের মধ্যে নির্ভরশীলতা না থাকে, তবে আপনি একে অপরের সাথে স্বাধীনভাবে টার্গেটগুলো ব্যবহার করতে পারেন। তবে, ANT কাজ করবে নির্দিষ্ট আদেশে টার্গেটগুলো সম্পন্ন করার জন্য।

উদাহরণ:

<target name="clean">
    <delete dir="build"/>
</target>

<target name="compile">
    <javac srcdir="src" destdir="build"/>
</target>

<target name="test">
    <junit>
        <classpath>
            <pathelement path="build"/>
        </classpath>
        <test name="TestClass"/>
    </junit>
</target>

এখানে clean, compile, এবং test টার্গেটগুলি একে অপরের উপর নির্ভরশীল নয়। আপনি যে কোন টার্গেট আলাদাভাবে চালাতে পারবেন:

ant clean
ant compile
ant test

Default Target (ডিফল্ট টার্গেট)

আপনি একটি ডিফল্ট টার্গেট নির্দিষ্ট করতে পারেন, যা কোনও টার্গেট নাম ছাড়া যখন ANT চালানো হয় তখন স্বয়ংক্রিয়ভাবে রান হবে। ডিফল্ট টার্গেটের নাম default অ্যাট্রিবিউটে উল্লেখ করা হয়।

উদাহরণ:

<project name="MyProject" default="compile">
    <target name="clean">
        <delete dir="build"/>
    </target>

    <target name="compile">
        <javac srcdir="src" destdir="build"/>
    </target>
</project>

এখানে, যদি আপনি ant কমান্ডটি চালান, তবে compile টার্গেটটি ডিফল্টভাবে রান হবে কারণ সেটি default="compile" হিসেবে নির্দিষ্ট করা হয়েছে।


সারমর্ম

  • Multiple Build Targets: ANT-এ একাধিক টার্গেট ব্যবহার করা হয় এবং প্রতিটি টার্গেট একটি নির্দিষ্ট কাজ বা ধাপ সম্পন্ন করে।
  • depends: একটি টার্গেটের নির্ভরশীলতা সৃষ্টির জন্য depends অ্যাট্রিবিউট ব্যবহার করা হয়। ANT নির্ভরশীল টার্গেটগুলি স্বয়ংক্রিয়ভাবে রান করে।
  • Target Execution: আপনি একাধিক টার্গেটকে একসাথে অথবা আলাদাভাবে চালাতে পারেন।
  • Default Target: default অ্যাট্রিবিউট দিয়ে ডিফল্ট টার্গেট নির্দিষ্ট করা যায়, যা ANT রান করার সময় প্রথমে চালানো হয়।

Multiple build targets ব্যবহারের মাধ্যমে আপনি একটি প্রজেক্টের বিল্ড প্রক্রিয়া ভালোভাবে সংহত করতে পারেন এবং কাজগুলোকে আরও নিয়মিত ও কার্যকরভাবে সাজাতে পারেন।

common.content_added_by

ফাইল এবং ডিরেক্টরি চেক করা

199
199

Apache ANT-এ ফাইল বা ডিরেক্টরি চেক করার জন্য কিছু বিশেষ টাস্ক রয়েছে, যেমন available, fileset, এবং mkdir। এই টাস্কগুলো ব্যবহার করে আপনি ফাইল এবং ডিরেক্টরি অস্তিত্ব চেক, তৈরি বা মুছতে পারেন। এখানে বিভিন্ন উদাহরণ দেওয়া হলো কীভাবে এই টাস্কগুলো ব্যবহার করা যায়।


1. available টাস্ক ব্যবহার করে ফাইল বা ডিরেক্টরি চেক করা

available টাস্ক ব্যবহার করে আপনি চেক করতে পারেন যে নির্দিষ্ট ফাইল বা ডিরেক্টরি বিদ্যমান কি না। এটি একটি বুলিয়ান ভ্যালু ফেরত দেয় যা নির্ধারণ করে যে ফাইল বা ডিরেক্টরি বিদ্যমান কি না।

Example: ফাইল অস্তিত্ব চেক করা

<project name="CheckFileExistence" default="check-file" basedir=".">
    
    <!-- File to check -->
    <property name="file.to.check" value="example.txt"/>
    
    <!-- Target to check file existence -->
    <target name="check-file">
        <available file="${file.to.check}" property="file.exists"/>
        
        <echo message="File exists: ${file.exists}"/>
    </target>
</project>

কী কী করা হচ্ছে:

  • available: এই টাস্কের মাধ্যমে example.txt ফাইলটি চেক করা হচ্ছে। যদি ফাইলটি বিদ্যমান থাকে তবে file.exists প্রোপার্টি সেট হবে।
  • echo: ফাইলের অস্তিত্ব সম্পর্কে একটি বার্তা দেখাবে।

কমান্ড:

ant check-file

যদি example.txt ফাইলটি বিদ্যমান থাকে, তাহলে এটি "File exists: true" প্রদর্শন করবে। অন্যথায়, "File exists: false" প্রদর্শিত হবে।


2. ডিরেক্টরি অস্তিত্ব চেক করা

ডিরেক্টরি অস্তিত্ব চেক করতে available টাস্ক ব্যবহার করা যায়। ফাইল চেকের মতোই, ডিরেক্টরি চেক করতে একই পদ্ধতি অনুসরণ করা যায়।

Example: ডিরেক্টরি অস্তিত্ব চেক করা

<project name="CheckDirectoryExistence" default="check-directory" basedir=".">
    
    <!-- Directory to check -->
    <property name="dir.to.check" value="mydir"/>

    <!-- Target to check directory existence -->
    <target name="check-directory">
        <available dir="${dir.to.check}" property="dir.exists"/>
        
        <echo message="Directory exists: ${dir.exists}"/>
    </target>
</project>

কী কী করা হচ্ছে:

  • available: এখানে mydir ডিরেক্টরির অস্তিত্ব চেক করা হচ্ছে। যদি ডিরেক্টরি বিদ্যমান থাকে তবে dir.exists প্রোপার্টি সেট হবে।
  • echo: ডিরেক্টরির অস্তিত্ব সম্পর্কে বার্তা প্রদর্শিত হবে।

কমান্ড:

ant check-directory

যদি mydir ডিরেক্টরি বিদ্যমান থাকে, তাহলে এটি "Directory exists: true" প্রদর্শন করবে। অন্যথায়, "Directory exists: false" দেখাবে।


3. ফাইল/ডিরেক্টরি তৈরি করা

mkdir টাস্ক ব্যবহার করে আপনি একটি ডিরেক্টরি তৈরি করতে পারেন যদি এটি আগে থেকে না থাকে।

Example: ডিরেক্টরি তৈরি করা

<project name="CreateDirectory" default="create-dir" basedir=".">
    
    <!-- Directory to create -->
    <property name="dir.to.create" value="newdir"/>

    <!-- Target to create directory -->
    <target name="create-dir">
        <mkdir dir="${dir.to.create}"/>
        <echo message="Directory created: ${dir.to.create}"/>
    </target>
</project>

কী কী করা হচ্ছে:

  • mkdir: এই টাস্কের মাধ্যমে newdir নামক একটি ডিরেক্টরি তৈরি করা হবে।
  • echo: তৈরি হওয়া ডিরেক্টরি সম্পর্কে বার্তা প্রদর্শন করা হবে।

কমান্ড:

ant create-dir

এটি newdir নামক একটি ডিরেক্টরি তৈরি করবে যদি এটি আগে থেকে না থাকে এবং "Directory created: newdir" বার্তা প্রদর্শন করবে।


4. ফাইল বা ডিরেক্টরি মুছে ফেলা

delete টাস্ক ব্যবহার করে আপনি ফাইল বা ডিরেক্টরি মুছে ফেলতে পারেন।

Example: ফাইল মুছে ফেলা

<project name="DeleteFile" default="delete-file" basedir=".">
    
    <!-- File to delete -->
    <property name="file.to.delete" value="oldfile.txt"/>
    
    <!-- Target to delete file -->
    <target name="delete-file">
        <delete file="${file.to.delete}"/>
        <echo message="File deleted: ${file.to.delete}"/>
    </target>
</project>

কী কী করা হচ্ছে:

  • delete: এই টাস্কের মাধ্যমে oldfile.txt ফাইলটি মুছে ফেলা হবে।
  • echo: মুছে ফেলা ফাইল সম্পর্কে বার্তা প্রদর্শন করা হবে।

কমান্ড:

ant delete-file

এটি oldfile.txt ফাইলটি মুছে ফেলবে এবং "File deleted: oldfile.txt" বার্তা প্রদর্শন করবে।


5. ফাইল সেট (FileSet) ব্যবহার করে একাধিক ফাইল চেক করা

একাধিক ফাইল চেক করতে fileset টাস্ক ব্যবহার করা যেতে পারে। এই টাস্কটি একটি নির্দিষ্ট প্যাটার্ন বা ডিরেক্টরি থেকে ফাইলগুলো নির্বাচন করতে সাহায্য করে।

Example: ফাইল সেট ব্যবহার করা

<project name="FileSetExample" default="check-files" basedir=".">
    
    <!-- FileSet to check files -->
    <fileset dir="src">
        <include name="**/*.txt"/>
    </fileset>

    <!-- Target to echo the file list -->
    <target name="check-files">
        <echo message="Checking files..."/>
    </target>
</project>

কী কী করা হচ্ছে:

  • fileset: এই টাস্কের মাধ্যমে src ডিরেক্টরির সব .txt ফাইল নির্বাচন করা হচ্ছে।

সারমর্ম:

  • ফাইল চেক করা: available টাস্ক ব্যবহার করে আপনি ফাইল বা ডিরেক্টরি চেক করতে পারেন।
  • ডিরেক্টরি তৈরি করা: mkdir টাস্ক দিয়ে ডিরেক্টরি তৈরি করা যায়।
  • ফাইল/ডিরেক্টরি মুছে ফেলা: delete টাস্ক দিয়ে ফাইল বা ডিরেক্টরি মুছে ফেলতে পারবেন।
  • ফাইল সেট ব্যবহার করা: একাধিক ফাইল চেক বা অপারেট করতে fileset টাস্ক ব্যবহার করা হয়।

এগুলো ব্যবহার করে আপনি Apache ANT দিয়ে ফাইল এবং ডিরেক্টরি নিয়ে বিভিন্ন কাজ সহজে করতে পারবেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion